home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / astral / a1 / game / source / scmds.asm < prev    next >
Assembly Source File  |  1994-01-07  |  4KB  |  179 lines

  1.     .386p
  2.  
  3. public    SPR_set_att,SPR_set_pos,SPR_set_att_pos
  4.  
  5. data    segment    dword    'DATA'
  6.  
  7. data    ends
  8.  
  9. code    segment    dword    'CODE'
  10.     assume    cs:code,ds:data
  11.  
  12. ;------------------------------------------------------------------------------
  13. ;    スプライトのアトリビュートの設定
  14. ;    SPR_set_att(int num,int x,int y,int attr,int col)
  15. ;        for Screen10
  16. ;    EAX   EBX   ECX   EDX   ESI   EDI
  17. ;    色・アトリ  未使用      X・Yカウンタ  転送先アドレス 未使用      未使用
  18. ;------------------------------------------------------------------------------
  19.     align 4
  20.  
  21. SPR_set_att    proc
  22.  
  23.     push    es
  24.     push    ebp
  25.     mov    ebp,esp
  26.  
  27.     mov    ax,130h                ;スプライトのセレクタをセット
  28.     mov    es,ax
  29.  
  30.     mov    edx,ss:[ebp]+8+4        ;スプライト番号をセット
  31.     shl    edx,3
  32.     add    edx,4
  33.  
  34.     mov    cl,byte ptr ss:[ebp]+8+8    ;Xカウンタをセット
  35.     mov    ch,byte ptr ss:[ebp]+8+12    ;Yカウンタをセット
  36.  
  37.     mov    eax,ss:[ebp]+8+20        ;色テーブルをセット
  38.     shl    eax,16
  39.     mov    ax,word ptr ss:[ebp]+8+16    ;アトリビュートをセット
  40.  
  41.     align    4
  42.  
  43. spr_set_att_start:
  44.  
  45.     mov    es:[edx],eax            ;アトリビュート&色の転送
  46.     inc    eax
  47.     add    edx,8
  48.  
  49.     dec    cl                ;Xリピート
  50.     jnz    spr_set_att_start
  51.  
  52.     mov    cl,byte ptr ss:[ebp]+8+8    ;Yリピート
  53.     dec    ch
  54.     jnz    spr_set_att_start
  55.  
  56.     pop    ebp
  57.     pop    es
  58.  
  59.         ret
  60.  
  61. SPR_set_att    endp
  62.  
  63. ;------------------------------------------------------------------------------
  64. ;    スプライトのポジションの設定
  65. ;    SPR_set_pos(int num,int x,int y,int xdot,int ydot)
  66. ;        for Screen10
  67. ;    EAX   EBX   ECX   EDX   ESI   EDI
  68. ;    X・Y座標  未使用      X・Yカウンタ  転送先アドレス 未使用      未使用
  69. ;------------------------------------------------------------------------------
  70.     align 4
  71.  
  72. SPR_set_pos    proc
  73.  
  74.     push    es
  75.     push    ebp
  76.     mov    ebp,esp
  77.  
  78.     mov    ax,130h                ;スプライトのセレクタをセット
  79.     mov    es,ax
  80.  
  81.     mov    edx,ss:[ebp]+8+4        ;スプライト番号をセット
  82.     shl    edx,3
  83.  
  84.     mov    cl,byte ptr ss:[ebp]+8+8    ;Xカウンタをセット
  85.     mov    ch,byte ptr ss:[ebp]+8+12    ;Yカウンタをセット
  86.  
  87.     mov    eax,ss:[ebp]+8+20        ;X座標をセット
  88.     shl    eax,16
  89.     mov    ax,word ptr ss:[ebp]+8+16    ;Y座標をセット
  90.  
  91.     align    4
  92.  
  93. spr_set_pos_start:
  94.  
  95.     mov    es:[edx],eax            ;アトリビュート&色の転送
  96.     add    edx,8
  97.     add    eax,16
  98.  
  99.     dec    cl                ;Xリピート
  100.     jnz    spr_set_pos_start
  101.  
  102.     mov    cl,byte ptr ss:[ebp]+8+8    ;Yリピート
  103.     mov    ax,word ptr ss:[ebp]+8+16
  104.     add    eax,100000h
  105.     dec    ch
  106.     jnz    spr_set_pos_start
  107.  
  108.     pop    ebp
  109.     pop    es
  110.  
  111.         ret
  112.  
  113. SPR_set_pos    endp
  114.  
  115. ;------------------------------------------------------------------------------
  116. ;    スプライトのアトリビュート&ポジションの設定
  117. ;    SPR_set_att_pos(int num,int x,int y,int attr,int col,int xdot,int ydot)
  118. ;        for Screen10
  119. ;    EAX   EBX   ECX   EDX   ESI   EDI
  120. ;    色・アトリ  未使用      X・Yカウンタ  X・Y座標  未使用      転送先アドレス
  121. ;------------------------------------------------------------------------------
  122.     align 4
  123.  
  124. SPR_set_att_pos    proc
  125.  
  126.     push    es
  127.     push    edi
  128.     push    ebp
  129.     mov    ebp,esp
  130.  
  131.     mov    ax,130h                ;スプライトのセレクタをセット
  132.     mov    es,ax
  133.  
  134.     mov    edi,ss:[ebp]+12+4        ;スプライト番号をセット
  135.     shl    edi,3
  136.  
  137.     mov    ecx,ss:[ebp]+12+8        ;Xカウンタをセット
  138.     mov    ch,byte ptr ss:[ebp]+12+12    ;Yカウンタをセット
  139.  
  140.     mov    edx,ss:[ebp]+12+28        ;Y座標をセット
  141.     shl    edx,16
  142.     mov    dx,word ptr ss:[ebp]+12+24    ;X座標をセット
  143.  
  144.     mov    eax,ss:[ebp]+12+20        ;色テーブルをセット
  145.     shl    eax,16
  146.     mov    ax,word ptr ss:[ebp]+12+16    ;アトリビュートをセット
  147.  
  148.     align    4
  149.  
  150. spr_set_start:
  151.  
  152.     mov    es:[edi],edx            ;X&Y座標の転送
  153.     add    edx,16
  154.     add    edi,4
  155.     mov    es:[edi],eax            ;アトリビュート&色の転送
  156.     inc    eax
  157.     add    edi,4
  158.  
  159.     dec    cl                ;Xリピート
  160.     jnz    spr_set_start
  161.  
  162.     mov    cl,byte ptr ss:[ebp]+12+8    ;Yリピート
  163.     mov    dx,word ptr ss:[ebp]+12+24
  164.     add    edx,100000h
  165.     dec    ch
  166.     jnz    spr_set_start
  167.  
  168.     pop    ebp
  169.     pop    edi
  170.     pop    es
  171.  
  172.         ret
  173.  
  174. SPR_set_att_pos    endp
  175.  
  176. code    ends
  177.  
  178.     end
  179.